#!/bin/bash

# 安装CPU调度优化服务的脚本
# 作者: Craft
# 日期: 2025/9/1
# 描述: 此脚本将安装CPU调度优化服务到系统分区，使其在开机时自动执行

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查是否以root权限运行
if [ "$(id -u)" -ne 0 ]; then
   echo -e "${RED}此脚本需要root权限运行${NC}"
   echo "请使用 sudo $0 重新运行"
   exit 1
fi

echo -e "${BLUE}===== CPU调度优化服务安装 =====${NC}"
echo "此脚本将安装CPU调度优化服务到系统分区，使其在开机时自动执行"
echo

# 获取脚本目录
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
SCRIPT_PATH="${SCRIPT_DIR}/cpu_scheduler.sh"
SERVICE_PATH="${SCRIPT_DIR}/cpu-scheduler.service"

# 检查脚本和服务文件是否存在
if [ ! -f "$SCRIPT_PATH" ]; then
    echo -e "${RED}错误: CPU调度优化脚本不存在: $SCRIPT_PATH${NC}"
    exit 1
fi

if [ ! -f "$SERVICE_PATH" ]; then
    echo -e "${RED}错误: 服务文件不存在: $SERVICE_PATH${NC}"
    exit 1
fi

# 设置脚本执行权限
echo -e "${BLUE}[1/5] 设置脚本执行权限...${NC}"
chmod +x "$SCRIPT_PATH"
echo -e "${GREEN}✓ 脚本执行权限已设置${NC}"

# 复制脚本和配置文件到系统分区
echo -e "${BLUE}[2/5] 复制文件到系统分区...${NC}"
# 创建opt目录（如果不存在）
mkdir -p /opt/ohmylinux/cpu-scheduler
SYSTEM_SCRIPT_PATH="/opt/ohmylinux/cpu-scheduler/cpu_scheduler.sh"
CONFIG_FILE_PATH="/opt/ohmylinux/cpu-scheduler/cpu-scheduler.conf"

# 复制脚本
cp "$SCRIPT_PATH" "$SYSTEM_SCRIPT_PATH"
chmod +x "$SYSTEM_SCRIPT_PATH"
echo -e "${GREEN}✓ 脚本已复制到系统分区: $SYSTEM_SCRIPT_PATH${NC}"

# 复制配置文件（如果存在）
if [ -f "${SCRIPT_DIR}/cpu-scheduler.conf" ]; then
    cp "${SCRIPT_DIR}/cpu-scheduler.conf" "$CONFIG_FILE_PATH"
    echo -e "${GREEN}✓ 配置文件已复制到系统分区: $CONFIG_FILE_PATH${NC}"
else
    echo -e "${YELLOW}⚠ 未找到配置文件，将使用默认配置${NC}"
fi

# 复制服务文件到systemd目录
echo -e "${BLUE}[3/5] 安装systemd服务...${NC}"
# 创建一个临时文件，替换服务文件中的脚本路径为系统分区中的路径
sed "s|ExecStart=.*|ExecStart=/bin/bash $SYSTEM_SCRIPT_PATH --service|g" "$SERVICE_PATH" > /tmp/cpu-scheduler.service
# 确保服务文件中的WorkingDirectory指向配置文件目录
sed -i "s|^WorkingDirectory=.*|WorkingDirectory=/opt/ohmylinux/cpu-scheduler|" /tmp/cpu-scheduler.service
cp /tmp/cpu-scheduler.service /etc/systemd/system/
rm /tmp/cpu-scheduler.service
echo -e "${GREEN}✓ 服务文件已复制并更新脚本路径${NC}"

# 重新加载systemd配置
echo -e "${BLUE}[4/5] 重新加载systemd配置...${NC}"
systemctl daemon-reload
echo -e "${GREEN}✓ systemd配置已重新加载${NC}"

# 启用服务
echo -e "${BLUE}[5/5] 启用服务...${NC}"
systemctl enable cpu-scheduler.service

echo -e "${GREEN}✓ CPU调度优化服务已成功启用${NC}"

echo
echo -e "${GREEN}===== CPU调度优化服务安装完成 =====${NC}"
echo "服务已设置为开机自动启动"
echo "您可以使用以下命令管理服务:"
echo "  启动服务: sudo systemctl start cpu-scheduler.service"
echo "  停止服务: sudo systemctl stop cpu-scheduler.service"
echo "  禁用服务: sudo systemctl disable cpu-scheduler.service"
echo "  查看状态: sudo systemctl status cpu-scheduler.service"
echo "  查看日志: sudo journalctl -u cpu-scheduler.service"
echo "  动态调整参数: sudo systemctl reload cpu-scheduler.service interval=3 high=85 low=35"
echo
echo -e "${YELLOW}注意: 如果您更新了脚本，需要重新运行此安装脚本${NC}"
echo -e "${YELLOW}脚本已安装到系统分区: $SYSTEM_SCRIPT_PATH${NC}"
echo -e "${YELLOW}配置文件位置: $CONFIG_FILE_PATH${NC}"
echo -e "${YELLOW}服务支持运行时动态调整参数(使用systemctl reload命令)${NC}"